package statefulSB;

import entity.Adesione;
import entity.Articolo;
import entity.UtenteRegistrato;
import javax.ejb.Local;

/**
 * Informazioni sulla sessione per l'utente correntemente loggato
 * @author ale
 */
@Local
public interface UtenteLoggatoLocal {

    /**
     * Recupera l'utente correntemente loggato, null se l'utente non è loggato
     * @return l'utente correntemente loggato, null se l'utente non è loggato
     */
    UtenteRegistrato getUtente();

    /**
     * Get the value of idUtente
     *
     * @return the value of idUtente
     */    
    public java.lang.Long getIdUtente();

    /**
     * Set the value of idUtente
     *
     * @param idUtente new value of idUtente
     */
    public void setIdUtente(java.lang.Long idUtente);

    /**
     * Recupera l'adesione in corso per un certo annuncio. 
     * Le adesioni sono identificate dall'annuncio a cui si riferiscono, finché non sono salvate su db
     * @param idAnnuncio id dell'annuncio di cui recuperare l'adesione temporanea
     * @return l'adesione teomporanea riferita all'annuncio in input
     */
    Adesione getAdesioneByAnnuncioId(long idAnnuncio);

    /**
     * Aggiunge un'adesione alla lista di adesioni temporanee
     * @param adesione la nuova adesione
     */
    void aggiungiAdAdesioni(Adesione adesione);

    /**
     * Annulla un'adesione temporanea
     * @param idAnnuncio l'id dell'annuncio a cui l'adesione temporanea si riferisce
     */
    public void annullaAdesione(long idAnnuncio);

    /**
     * Aggiunge un articolo a un'adesioen temporanea
     * @param idAnnuncio l'id dell'annuncio a cui l'adesione temporanea si riferisce
     * @param art articolo da aggiungere
     */
    public void aggiungiArticoloAdAdesione(long idAnnuncio, Articolo art);

    /**
     * Set the value of adesioniInCorso
     *
     * @param adesioniInCorso new value of adesioniInCorso
     */
    public void setAdesioniInCorso(java.util.List<entity.Adesione> adesioniInCorso);

    /**
     * Cancella le informazioni sulla sessione corrente
     */
    public void remove();

    /**
     * Imposta lo stato dell'iscrizione dell'utente
     * @param statoIscrizione lo stato dell'iscrizione dell'utente
     */
    public void setStatoIscrizione(statefulSB.UtenteLoggato.StatoIscrizione statoIscrizione);

    /**
     * Restituisce lo stato dell'iscrizione dell'utente
     * @return lo stato dell'iscrizione dell'utente
     */
    public statefulSB.UtenteLoggato.StatoIscrizione getStatoIscrizione();

    /**
     * Set the value of facebookToken
     *
     * @param facebookToken new value of facebookToken
     */
    public void setFacebookToken(java.lang.String facebookToken);

    /**
     * Get the value of facebookToken
     *
     * @return the value of facebookToken
     */
    public java.lang.String getFacebookToken();

    /**
     * Get the value of adesioniInCorso
     *
     * @return the value of adesioniInCorso
     */
    public java.util.List<entity.Adesione> getAdesioniInCorso();
    
}
